package saei.bean;

import javax.persistence.*;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.ForeignKey;

import saei.bean.parametros.MarcaEquipo;
import saei.bean.parametros.ModeloImpresora;
import saei.bean.parametros.ModoImpresion;
import saei.bean.parametros.TipoConectividad;
import saei.bean.vo.ImpresoraVO;

@SuppressWarnings("serial")
@Entity
@PrimaryKeyJoinColumn(name="id_equipo")
public class Impresora extends Equipo
{
    @ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
	@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
    @ForeignKey(name="fk_impresora_modo")
    @JoinColumn(name="id_impresion")
    private ModoImpresion modoImpresion;
    @ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
	@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
    @ForeignKey(name="fk_impresora_conect")
    @JoinColumn(name="id_conectividad")
    private TipoConectividad tipoConectividad;

    public Impresora () {}

    public Impresora (String numeroSerie){
    	super(numeroSerie);
    }

    public Impresora (String numeroSerie, MarcaEquipo marca, ModeloImpresora modelo, Remito remito, String observaciones,
                    ModoImpresion modoImpresion, TipoConectividad tipoConectividad)
    {
		super(numeroSerie, marca, modelo, remito, observaciones);
		
		this.modoImpresion = modoImpresion;
		this.tipoConectividad = tipoConectividad;
    }

	public ModoImpresion getModoImpresion() {
		return modoImpresion;
	}

	public void setModoImpresion(ModoImpresion modoImpresion) {
		this.modoImpresion = modoImpresion;
	}

	public TipoConectividad getTipoConectividad() {
		return tipoConectividad;
	}

	public void setTipoConectividad(TipoConectividad tipoConectividad) {
		this.tipoConectividad = tipoConectividad;
	}

	public ImpresoraVO getVO() {
		ImpresoraVO vo = new ImpresoraVO();
		vo.setEstado(this.getEstado().getDescripcion());
		vo.setMarca(this.getMarca().getDescripcion());
		vo.setModelo(this.getModelo().getDescripcion());
		vo.setNumeroSerie(this.getNumeroSerie());
		vo.setObservaciones(this.getObservaciones());
		
		vo.setModoImpresion(modoImpresion.getDescripcion());
		vo.setTipoConectividad(tipoConectividad.getDescripcion());
		
		return vo;
	}
}
